home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-01-17 | 80.6 KB | 1,887 lines |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RAVITZ EDITOR 1.00 PROFILE REFERENCE
-
- (C) Copyright 1989 Cary Ravitz
-
-
- Cary Ravitz
- P. O. Box 25068
- Lexington, KY 40524-5068
-
-
- p-1
- CONTENTS
-
- RE PROFILE ASSEMBLER PROGRAM ..................................... 2
- MNEMONIC ABBREVIATIONS 3
- @ALLOWDVWIN - ALLOW DESQVIEW WINDOWING ........................... 4
- @BEEP - BEEP ON ERROR MESSAGES 4
- @CMDSAVELEN, @CMDSAVENUM - COMMAND RECALL LIST QUALIFIERS ........ 4
- @CSRPOSEDIT - CURSOR POSITION AFTER EDIT COMMAND 4
- @CSRSPEED, @CSRSPEEDV - CURSOR SPEED ............................. 4
- @DATEFORM, @TIMEFORM - DATE, TIME FORMAT 4
- @DECOASTKB - DECOAST KEYBOARD? ................................... 4
- @DEFPRN - DEFAULT PRINTER 4
- @DEFSAVETP - DEFAULT SAVE TYPE ................................... 5
- @DEFTABHAN - DEFAULT TAB HANDLING 5
- @DEFWRAP - DEFAULT WORD WRAP MARGINS ............................. 5
- @EDCURFL - EDIT CURRENT FILE 5
- @EMKBBFPRM - EMPTY KEYBOARD BUFFER FOR PROMPT? ................... 5
- @ENHANCEDKB - ENHANCED KEYBOARD HANDLING 5
- @EXCHAR, @EXCHARST - EXCLUDED LINE SYMBOLS ....................... 5
- @EXFILENAME - EXPAND FILE NAMES 6
- @FILETP - FILE TYPE .............................................. 6
- @FINDWORD(0..31) - FIND COMMAND WORD OPTION 6
- @GOTOMARGIN - GO TO MARGIN ....................................... 6
- @HICSRFIND - HIGHLIGHT CURSOR AFTER FIND/CHANGE 6
- @HORSCRNCOR, @VERSCRNCOR - HORIZONTAL, VERTICAL SCREEN CORRECTION 7
- @INITRPLINS - INITIAL REPLACE / INSERT MODE 7
- @LNLEN - LINE LENGTH ............................................. 7
- @MENUPOS - MENU POSITION 7
- @MOUSE* - MOUSE CONFIGURATION PARAMETERS ......................... 7
- @POLLINPUT - POLL INPUT? 8
- @SCRNWAIT - COLOR SCREEN UPDATE WAITS ............................ 8
- @SHOWHIDSYS - SHOW HIDDEN AND SYSTEM FILES IN DIRECTORY LIST 8
- @SORTDIR - SORT DIRECTORIES ...................................... 8
- @SORTSEQ(0..255) - SORTING SEQUENCE 8
- @TBNEWLN - TOP BOTTOM NEW LINE FUNCTION .......................... 8
- SCREEN COLORS AND CURSOR TYPE 9
- FUNCTION KEY DEFINITION .......................................... 9
- KEY ASSIGNMENT TABLE 10
- RE FUNCTIONS .................................................... 13
- @SPECIALKEY AND @SPECIALKAL - SPECIAL KEYS 23
- MACROS .......................................................... 24
- STARTUP MACRO 25
- VARIABLES ....................................................... 25
- MANIPULATION OF MACRO FUNCTIONS 25
- HANDY MACRO SEQUENCES ........................................... 26
- QUERYING MODES AND SITUATIONS 27
- WORKING WITH A SPLIT SCREEN ..................................... 27
- MACRO CONTROL OF COMMANDS 28
- MACRO DEFINED SHIFT MODES ....................................... 29
- MULTIFUNCTION MACROS 29
- GETKEY AND STRUCTURED USER INPUT ................................ 30
- MESSAGES, MESSAGE TYPES, AND USER DEFINED MESSAGES 31
- TAB SETS ........................................................ 32
- HELP TEXT 32
- MENUS ........................................................... 33
- PANELS 34
- COMPATIBILITY AND TECHNICAL INFORMATION ......................... 36
-
-
- p-2
- RE PROFILE ASSEMBLER PROGRAM
-
- The RE EXE file can be set up to make it more effective for specific
- uses. The program REPROF (file REPROF.EXE) is used to generate
- personalized versions of RE.
-
- REPROF reads a profile and creates a new RE.EXE. The calling
- sequence is "REPROF (profile) (O-newexefile) (F)". If no profile is
- specified then the default RE.EXE is created (this is the same as
- using REPROF.1 unmodified). You can specify an output file with
- O-filename. F says to do a fast help compression instead of the
- default compression. The fast help compression is not as effective
- as the normal help compression, but it is useful if you are
- debugging macros.
-
- REPROF may be invoked from the RE command line using the current
- session as the profile by using the command "di reprof
- (o-newexefile) (f)". If there are any errors the cursor will be put
- on the problem line upon return to RE.
-
- The profile contains a list of modifications. First are byte and
- word patches, macros, messages, and tab sets. The forms of the lines
- are:
-
- B location value value ... byte patch in the RE patch area
- W location value value ... word patch in the RE patch area
- X number function function ... first line of macro
- Y function function ... continuation of macro
- M number type message message definition
- T number tabs tab set definition.
-
- These are followed by the help text and menus.
-
- Hex numbers are specified by prefixing them with $. ASCII values
- other than 0..9, $, ^, &, @, and space may be specified with that
- character for all values and functions (not locations). Mnemonics
- are provided for all functions and locations, and most values.
- Before the help text, lines that begin with "*" and blank lines are
- ignored, and "//" means that the following text is a new profile
- line. In the help text, lines with a "*" in column one are ignored,
- blank lines are part of the help text, and // is part of the help
- text.
-
- The file REPROF.1 contains the profile with which the default
- version of RE was created. REPROF.2 contains a few more functions
- than the default profile and has a shortened help text. Use these
- profiles as a starting point for creating your own profile.
-
- The size of RE.EXE grows or shrinks to accommodate different profile
- sizes. The total size of RE.EXE may not exceed 65536 bytes (64K).
- (From 56K to 64K can only be help text, but this is rarely a
- limitation.) This leaves at least 20K for your profile.
-
-
- p-3
- MNEMONIC ABBREVIATIONS
-
- To keep the location and function mnemonics short and consistent,
- this list of abbreviations is used.
-
- ABBREV FULL WORD ABBREV FULL WORD ABBREV FULL WORD
-
- a- alt- for forward ps position
- ar area ins insert rep repeat
- bk backward kb keyboard rpl replace
- c- ctrl- lf left rt right
- cmd command ln line s- shift-
- csr cursor md mode scrn screen
- del delete mk mark ses session
- def default np numeric keypad sp space
- ent enter para paragraph tp type
- ex exclude(d) pg page txt text
-
-
- p-4
- @ALLOWDVWIN - ALLOW DESQVIEW WINDOWING
-
- By default, RE looks for DESQview and uses the DESQview selected
- screen buffer. If you run in DESQview only in full screen mode,
- screen updates will be faster if you disable this feature. To do
- this, set the byte at @allowdvwin to ^no ("B @allowdvwin ^no"). The
- default is ^yes.
-
- @BEEP - BEEP ON ERROR MESSAGES
-
- Normally RE beeps only on severe errors. To make all error messages
- cause a beep, set the byte at @beep to ^error. The default is
- ^critical. ^no turns off all beeps.
-
- @CMDSAVELEN, @CMDSAVENUM - COMMAND RECALL LIST QUALIFIERS
-
- The byte at @cmdsavelen specifies the minimum length of a command
- that will be added to the command recall list. The maximum number of
- commands on the list is specified by the byte at @cmdsavenum.
-
- @CSRPOSEDIT - CURSOR POSITION AFTER EDIT COMMAND
-
- After a successful Edit command you can have the cursor placed on
- the command line (default) or in the text area. Set the byte at
- @csrposedit to ^cmdln or ^txtar to control this.
-
- @CSRSPEED, @CSRSPEEDV - CURSOR SPEED
-
- By default the horizontal cursor speed is tripled in typematic mode.
- This is set with B @csrspeed 2. You can slow it to double speed with
- 1 and normal speed with 0. Higher numbers also allowed.
-
- @csrspeedv works like @csrspeed except that it affects the vertical
- cursor speed. 0 is the default.
-
- @DATEFORM, @TIMEFORM - DATE, TIME FORMAT
-
- The word at @dateform sets the date format. This defaults to
- ^MM-DD-YY and can also be set to ^YY-MM-DD and ^YYYY-MM-DD. The
- alternate formats are directly sortable.
-
- The byte at @timeform sets the time format. The default is ^12hour
- and ^24hour is the only alternative. ^24hour format is directly
- sortable.
-
- @DECOASTKB - DECOAST KEYBOARD?
-
- Keyboard decoasting can be turned off by changing the byte at
- @decoastkb to ^no. The default is ^yes.
-
- @DEFPRN - DEFAULT PRINTER
-
- The default printer is specified by a Turbo Pascal string with a
- maximum length of 8. There should be no trailing blanks in the
- string. The length byte is at @defprn and the file or device name
- begins immediately after this. The default is PRN. To set the
- default printer to LPT2 use "B @defprn 4 l p t ^2".
-
-
- p-5
- @DEFSAVETP - DEFAULT SAVE TYPE
-
- The byte at @defsavetp sets the default save type. This is normally
- ^backup, but may be set to ^direct or ^indirect. The save type may
- also be set explicitly in each Save command.
-
- @DEFTABHAN - DEFAULT TAB HANDLING
-
- By default tabs are expanded on input but there is no tab
- compression on output. This is controlled by the byte at @deftabhan.
- It can be set to ^tabed(2..63) for tab expansion during the edit
- command, ^tabedsv(2..63) for tab expansion during edit and tab
- compression during save, or taboff(2..63) for no tab expansion or
- compression. The numeric parameter to these functions is the number
- of columns separating tab columns. It is needed even if you turn tab
- handling off because tab handling can be overridden by edit and save
- options. The default is ^tabed(8).
-
- @DEFWRAP - DEFAULT WORD WRAP MARGINS
-
- The initial left and right word wrap margins are one byte values at
- @defwrap. These are initially 1 and 255. The right word wrap margin
- may be individually accessed with @defwraprt.
-
- @EDCURFL - EDIT CURRENT FILE
-
- To cause the Edit command to default to the C option, which says to
- look for a current file before getting it from the disk, change the
- byte at @edcurfl from ^no to ^yes. This option is more accurate if
- you also set @exfilename to ^yes.
-
- @EMKBBFPRM - EMPTY KEYBOARD BUFFER FOR PROMPT?
-
- To prevent RE from emptying the keyboard buffer for "Are you sure
- (Y/N)?" and "Replace file (Y/N)?" change the byte at @emkbbfprm from
- ^yes to ^no.
-
- @ENHANCEDKB - ENHANCED KEYBOARD HANDLING
-
- By default RE does not look for the enhanced keyboard. If you assign
- functions to keys on the enhanced keyboard (see below), you need to
- set the byte at @enhancedkb to ^auto to enable these keys. With the
- enhanced keyboard enabled RE will still handle regular keyboards.
- The default is ^off.
-
- The reason for not looking for the enhanced keyboard by default is
- that some resident programs cause RE to think that the enhanced
- keyboard is there when it is not. Outside of such problems, you can
- run on any PC with the enhanced keyboard enabled.
-
- @EXCHAR, @EXCHARST - EXCLUDED LINE SYMBOLS
-
- The two characters used to show excluded lines and the start of each
- line in an excluded group are bytes at @exchar and @excharst. They
- are defaulted to - and +.
-
-
- p-6
- @EXFILENAME - EXPAND FILE NAMES
-
- The byte at @exfilename is normally ^no, which says to leave file
- names as entered. If you change this to ^yes then file names entered
- with the Edit and Name commands will be expanded to include a disk
- and path, and any trailing dot is removed.
-
- @FILETP - FILE TYPE
-
- By default RE reads and writes old style ASCII files (CR/LF (13,10)
- at the end of every line and EOF (26) at the end of the file). If
- you set the byte at @filetp to ^new, RE reads and writes new style
- ASCII files (CR/LF at the end of every line except the last and no
- EOF). The default is ^old. The advantage of old style files is
- compatibility with other programs. The advantage of new style files
- is that ASCII 26 may be used as a character within the file and the
- trailing CR/LF/EOF sequence of old style files does not get in the
- way on printer control files.
-
- If you set RE up to use new style files, it can still read an old
- style file but its final line will be an ASCII 26. If you leave that
- line and save the file, it will still be a good old style file.
-
- If RE is set up for old style files, it can read new style files in
- general, but it will stop reading at the first ASCII 26, and it will
- save the file as an old style file.
-
- @FINDWORD(0..31) - FIND COMMAND WORD OPTION
-
- The characters that are considered to be part of a word by the W
- (word) option of the F (find) command, the uppercase first letter
- function, and the ^ifcharinword and ^ifcharnotinword functions are
- specified by a Turbo Pascal set constant. The set is specified by 32
- bytes at @findword(0..31). Each character is represented by one bit
- in the set. Bits that are 1 represent characters that are part of a
- word. Bits that are 0 are word separators. The default set is #, $,
- %, 0..9, @, A..Z, a..z. The address of a bit as a function of the
- ASCII code that it controls is:
-
- the byte address is @findword(ASCII shr 3)
- the bit within that byte is ASCII and 7.
-
- @GOTOMARGIN - GO TO MARGIN
-
- When RE goes to a specific line with the go to function, or a Find,
- Change, or line number command, it puts the line one line down from
- the first line in the text area. This can be changed to any number
- from 0 to 40. To do this, set the byte at @gotomargin to the desired
- margin. The default is 1. RE dynamically limits the actual value
- used to half the text area height, so 40 may be a useful value.
-
- @HICSRFIND - HIGHLIGHT CURSOR AFTER FIND/CHANGE
-
- To cause the cursor to be highlighted after a successful find or
- change, set the byte at @hicsrfind to 1..126 to set the number of
- blinks or ^yes for indefinite blinking. The default is 2.
-
-
- p-7
- @HORSCRNCOR, @VERSCRNCOR - HORIZONTAL, VERTICAL SCREEN CORRECTION
-
- When RE does an automatic horizontal screen scroll, it puts the
- cursor ten spaces into the screen. This correction is specified in
- the byte at @horscrncor and may be from 0 to 39. The default is 10.
-
- When RE does an automatic vertical screen scroll during vertical
- cursor movement, it puts the cursor on the edge of the screen. This
- correction is specified in the byte at @verscrncor and may be from 0
- to 40. The default is 0. RE dynamically limits the actual value used
- to half the text area height, so you might find 40 a useful value.
-
- @INITRPLINS - INITIAL REPLACE / INSERT MODE
-
- To set the initial replace / insert mode to insert, change the byte
- at @initrplins to ^ins. The default is ^rpl.
-
- @LNLEN - LINE LENGTH
-
- The byte at @lnlen specifies the maximum line length for RE. It
- defaults to the maximum of 255 and may be as low as the number of
- columns on your screen. If it is less than this then RE will refuse
- to start.
-
- @MENUPOS - MENU POSITION
-
- By default (B @menupos ^auto) menus pop up at the top or bottom of
- the screen to avoid covering the cursor. If you prefer them to
- always pop up at the bottom, set B @menupos ^bottom.
-
- @MOUSE* - MOUSE CONFIGURATION PARAMETERS
-
- You can configure RE's mouse handling with these patches:
-
- B @mouse ^yes / ^no use mouse? default ^yes
- B @mousereset ^hard / ^soft mouse reset type default ^hard
- B @mousehsen 1..255 mouse ticks/column default 12
- B @mousevsen 1..255 mouse ticks/line default 16
-
- The @mousereset patch lets you use a software mouse reset. This may
- be useful on computers that have very slow hardware mouse resets
- (some IBM PS/2s). If you notice a two second delay on startup or
- after a DOS shell, try B @mousereset ^soft.
-
- You can also assign functions to the mouse buttons and movement. See
- KEY ASSIGNMENT TABLE.
-
-
- p-8
- @POLLINPUT - POLL INPUT?
-
- Normally RE polls the keyboard input, calling the BIOS "key
- pressed?" function. This is needed for the caps lock indicator,
- cursor highlighting, mouse handling, and automatic keyboard state
- panels. However it uses up battery power on some laptop computers by
- preventing shut down and it prevents efficient multitasking in
- DESQview. Set the byte at @pollinput to ^no to turn off polling -
- this will also shut off the caps lock indicator. Set it to ^yes to
- always do polling. Set it to ^auto to turn off polling only when
- running under DESQview or on a PC Convertible. It is normally ^yes.
-
- Regardless of how you set @pollinput polling will be turned on if
- you use automatic panels or a mouse. Also polling is always in
- effect while the cursor is highlighted, while RE is doing background
- data defragmentation, and for a half second after each keystroke.
-
- @SCRNWAIT - COLOR SCREEN UPDATE WAITS
-
- On a color graphics adaptor RE waits for retraces to update the
- screen to prevent "snow". Some CGAs do not need these waits. RE
- normally does not do screen update waits on PCjrs, PC Convertibles,
- PS/2 Model 30s and 80s, EGAs, VGAs, MDAs, any display mode other
- than 2 or 3, and any mode with other than 80 columns. The byte at
- @scrnwait can be set to ^auto (the default) to let RE make the
- decision, ^yes to force waits, or ^no to disable waits.
-
- @SHOWHIDSYS - SHOW HIDDEN AND SYSTEM FILES IN DIRECTORY LIST
-
- Normally directory lists ignore hidden and system file. Set B
- @showhidsys ^yes to include these files. The default is ^no.
-
- @SORTDIR - SORT DIRECTORIES
-
- Normally RE sorts directory lists. This can be disabled by setting B
- @sortdir ^no. Subdirectories will still be separated from files, but
- otherwise they will be in the same order as with a DOS DIR command.
- The default is ^yes.
-
- @SORTSEQ(0..255) - SORTING SEQUENCE
-
- The default collating sequence for the Order command (without the C
- option) is contained in an array of bytes from 0 to 255. This array
- does not contain a sequence of ASCII codes but instead contains the
- sort value for each ASCII code. This lets you define a number of
- characters to have the same sort value. The address of the sort
- value for ASCII code i is @sortseq(i).
-
- @TBNEWLN - TOP BOTTOM NEW LINE FUNCTION
-
- When you type a character on the Top --- or Bottom --- line, RE
- inserts a new line, puts the cursor on it, and enters the character.
- This line can be added with one of four functions: ^newln(1) -
- cursor column is unchanged; ^newlnalign(1) - cursor is put under the
- first nonblank of the previous line; ^newlncol1(1) - cursor goes to
- column 1; or ^newlnww(1) - cursor goes to left word wrap column.
- This is set with W @tbnewln function. The default ^newln(1).
-
-
- p-9
- SCREEN COLORS AND CURSOR TYPE
-
- There are four sets of screen color attributes, each with eighteen
- attributes, listed below. RE reads the current display mode on
- startup and after a DOS shell and chooses: the mono attributes for
- mode 7; color attributes for modes 1 and 3; lcd attributes for any
- other mode on a PC Convertible; and b/w attributes for anything
- else. There are no mnemonics for the attribute values.
-
- There is also a cursor type byte patch for each display mode -
- @clrcsrtp, @b/wcsrtp, @moncsrtp, and @lcdcsrtp. Normally the PC
- blinking cursor is turned off and moved off the screen - this is set
- with ^noblink (the default). If it is desirable to have the PC
- cursor track the noblink cursor, use ^noblink/bios. The PC cursor
- will still be turned off but it will move with the noblink cursor.
- This may cause problems with some resident programs that turn the
- cursor on but do not turn it off when finished. Use ^bios to disable
- the noblink cursor and enable the PC cursor.
-
- ATTRIBUTE COLOR B/W MONO LCD
- PATCH PATCH PATCH PATCH
- LOCATION LOCATION LOCATION LOCATION
-
- text @clrtxt @b/wtxt @montxt @lcdtxt
- excluded line @clrextxt @b/wextxt @monextxt @lcdextxt
- area marked text @clrarmk @b/warmk @monarmk @lcdarmk
- area marked excl @clrarmkex @b/warmkex @monarmkex @lcdarmkex
- position mark @clrpsmk @b/wpsmk @monpsmk @lcdpsmk
- insert cursor @clrinscsr @b/winscsr @moninscsr @lcdinscsr
- replace cursor @clrrplcsr @b/wrplcsr @monrplcsr @lcdrplcsr
- error message @clrerrmsg @b/werrmsg @monerrmsg @lcderrmsg
- status line @clrstln @b/wstln @monstln @lcdstln
- inactive st line @clriastln @b/wiastln @moniastln @lcdiastln
- command line @clrcmdln @b/wcmdln @moncmdln @lcdcmdln
- top, bottom line @clrtopbot @b/wtopbot @montopbot @lcdtopbot
- help title @clrhlpttl @b/whlpttl @monhlpttl @lcdhlpttl
- help text @clrhlptxt @b/whlptxt @monhlptxt @lcdhlptxt
- menu title @clrmenttl @b/wmenttl @monmenttl @lcdmenttl
- menu text @clrmentxt @b/wmentxt @monmentxt @lcdmentxt
- menu cursor @clrmencsr @b/wmencsr @monmencsr @lcdmencsr
- menu text 2 @clrmentx2 @b/wmentx2 @monmentx2 @lcdmentx2
-
- FUNCTION KEY DEFINITION
-
- RE uses a translation table on all function keys. You may change
- this table to add or change function key assignments. To make a
- change: find the address in the KEY ASSIGNMENT TABLE that represents
- the key of interest; find the RE FUNCTION CODE that represents the
- function of interest; and assign the code to that address. There are
- many functions that take two or more words. These can only be used
- in macros, not in direct key assignments.
-
- For example, to assign the autoscroll cursor movement functions to
- the cursor keys, use these profile lines:
-
- W @csrlf &csrlf // W @csrrt &csrrt
- W @csrup &csrup // W @csrdn &csrdn
-
-
- p-10
- KEY ASSIGNMENT TABLE
-
- KEY PATCH LOCATION DEFAULT RE FUNCTION
-
- alt - @a-- &scrolllfcsr
- alt = @a-= &scrollrtcsr
- alt 1 @a-1 &repcurfind
- alt 2 @a-2 &repcurchange
- alt 3 @a-3 &fillnum
- alt 4 @a-4 &blankarrem
- alt 5 @a-5 &fillblock
- alt 6 @a-6 &noop
- alt 7 @a-7 &csrupoutline
- alt 8 @a-8 &csrdnoutline
- alt 9 @a-9 &shiftlf
- alt 0 @a-0 &shiftrt
- alt a @a-a &asciicode
- alt b @a-b &mkcor
- alt c @a-c ©lns
- alt d @a-d &delar
- alt e @a-e ¯o(125)
- alt f @a-f &flow
- alt f1 @a-f1 &help
- alt f2 @a-f2 &noop
- . . .
- alt f10 @a-f10 &noop
- alt g @a-g ¯o(101)
- alt h @a-h &hicsr(10)
- alt i @a-i &insar
- alt j @a-j &rtjustify
- alt k @a-k &eraseendln
- alt l @a-l &mkln
- alt m @a-m &movelns
- alt n @a-n &newlnalign(1)
- alt o @a-o &overlayar
- alt p @a-p &set/re/unpsmk
- alt q @a-q &nextses
- alt r @a-r &reshow
- alt s @a-s &split/join
- alt t @a-t &noop
- alt u @a-u &unmk
- alt v @a-v ¯o(102)
- alt w @a-w &setdrawingmd
- alt x @a-x &exindentrem
- alt y @a-y &recallcmdfor
- alt z @a-z ¯o(100)
- back tab @bktab &tabbkcurset
- backspace/ctrl h @bksp &bksp
- ctrl \ @c-\ 28
- ctrl ] @c-] 29
- ctrl - @c-- 31
- ctrl 2 (null) @c-2 0
- ctrl 6 @c-6 30
- ctrl a @c-a 1
- ctrl b @c-b 2
- ctrl backspace @c-bksp &delln
- ctrl c @c-c 3
-
-
- p-11
- ctrl d @c-d 4
- ctrl e @c-e 5
- ctrl end @c-end &bottomoffile
- ctrl ent/ctrl j @c-ent 10
- ctrl f @c-f 6
- ctrl f1 @c-f1 &noop
- . . .
- ctrl f10 @c-f10 &noop
- ctrl g @c-g 7
- ctrl home @c-home &topoffile
- ctrl k @c-k 11
- ctrl l @c-l 12
- ctrl left @c-lf &scrolllf(1)
- ctrl n @c-n 14
- ctrl o @c-o 15
- ctrl p @c-p 16
- ctrl page down @c-pgdn &scrolldn(1)
- ctrl page up @c-pgup &scrollup(1)
- ctrl q @c-q 17
- ctrl r @c-r 18
- ctrl right @c-rt &scrollrt(1)
- ctrl s @c-s 19
- ctrl t @c-t 20
- ctrl u @c-u 21
- ctrl v @c-v 22
- ctrl w @c-w 23
- ctrl x @c-x 24
- ctrl y @c-y 25
- ctrl z @c-z 26
- cursor down @csrdn &csrdnwrap
- cursor left @csrlf &csrlfwrap(1)
- cursor right @csrrt &csrrtwrap(1)
- cursor up @csrup &csrupwrap
- delete @delete &delchar(1)
- end @end &csrendln
- enter/ctrl m @ent ^macro(106)
- esc/ctrl [ @esc &csrcmd/txt
- f1 @f1 ¯o(112)
- f2 @f2 ¯o(113)
- f3 @f3 ¯o(114)
- f4 @f4 ¯o(115)
- f5 @f5 ¯o(116)
- f6 @f6 ¯o(117)
- f7 @f7 ¯o(118)
- f8 @f8 ¯o(119)
- f9 @f9 ¯o(120)
- f10 @f10 ¯o(121)
- home @home &csrstartln
- insert @insert &insrplmd
- mouse down @mousedn &csrdn
- mouse left @mouself &csrlf
- mouse lf button @mousebtnlf ¯o(124)
- mouse mid button @mousebtnmd &noop
- mouse right @mousert &csrrt
- mouse rt button @mousebtnrt &csrcmd/txt
- mouse up @mouseup &csrup
- page down @pgdn &scrolldncsr
-
-
- p-12
- page up @pgup &scrollupcsr
- shift f1 @s-f1 &noop
- . . .
- shift f10 @s-f10 &noop
- tab/ctrl i @tab &tabcurset
- (E) alt [ @e-a-[ &noop
- (E) alt ] @e-a-] &noop
- (E) alt ; @e-a-; &noop
- (E) alt ' @e-a-' &noop
- (E) alt ` @e-a-` &noop
- (E) alt \ @e-a-\ &noop
- (E) alt , @e-a-, &noop
- (E) alt . @e-a-. &noop
- (E) alt / @e-a-/ &noop
- (E) alt backsp @e-a-bksp &noop
- (E) alt del @e-a-del &noop
- (E) alt down @e-a-dn &noop
- (E) alt end @e-a-end &noop
- (E) alt enter @e-a-ent &noop
- (E) alt esc @e-a-esc &noop
- (E) alt f11 @e-a-f11 &noop
- (E) alt f12 @e-a-f12 &noop
- (E) alt home @e-a-home &noop
- (E) alt ins @e-a-ins &noop
- (E) alt kp * @e-a-np-* &noop
- (E) alt kp - @e-a-np-- &noop
- (E) alt kp + @e-a-np-+ &noop
- (E) alt kp / @e-a-np-/ &noop
- (E) alt kp ent @e-a-np-ent &noop
- (E) alt left @e-a-lf &noop
- (E) alt pg dn @e-a-pgdn &noop
- (E) alt pg up @e-a-pgup &noop
- (E) alt right @e-a-rt &noop
- (E) alt tab @e-a-tab &noop
- (E) alt up @e-a-up &noop
- (E) center csr @e-cencsr &noop
- (E) ctrl del/. @e-c-del &noop
- (E) ctrl dn/2 @e-c-dn &noop
- (E) ctrl f11 @e-c-f11 &noop
- (E) ctrl f12 @e-c-f12 &noop
- (E) ctrl ins/0 @e-c-ins &noop
- (E) ctrl kp - @e-c-np-- &noop
- (E) ctrl kp + @e-c-np-+ &noop
- (E) ctrl kp / @e-c-np-/ &noop
- (E) ctrl kp * @e-c-np-* &noop
- (E) ctrl kp 5 @e-c-np-5 &noop
- (E) ctrl tab @e-c-tab &noop
- (E) ctrl up @e-c-up &noop
- (E) f11 @e-f11 &noop
- (E) f12 @e-f12 &noop
- (E) shift f11 @e-s-f11 &noop
- (E) shift f12 @e-s-f12 &noop
-
- (E) in front of a key means that the key is detected only on an
- enhanced keyboard. These keys are all assigned no operation by
- default. To use any of the (E) keys, you must enable enhanced
- keyboard handling with the patch "B @enhancedkb ^auto".
-
-
- p-13
- RE FUNCTIONS
-
- MNEMONIC DESCRIPTION
-
- ^0 0
- ^1 1
- ^2 2
- ^3 3
- ^4 4
- ^5 5
- ^6 6
- ^7 7
- ^8 8
- ^9 9
- ^a(0..255) ASCII 0..255
- ^amp &
- ^at @
- ^asciicode enter ASCII code
- ^bksp backspace
- ^blankar blank area
- ^blankarnsc blank area - no on screen check
- ^blankarrem blank area - remove mark
- ^blankarremnsc blank area - remove mark - no on scrn check
- ^blankln blank current line
- ^bottomoffile to bottom of file
- ^center center
- ^centerrem center - remove mark
- ^clrchgd clear session changed flag
- ^clrmodadd clears the line mod and add status bits
- ^copylns copy line area
- ^crt ^
- ^csrcmd/txt cursor to command line/text
- ^csrcmdln cursor to command line
- ^csrcolx x cursor to column x
- ^csrdn cursor down without wrap
- ^csrdn(1..78) cursor down 1..78 lines without wrap
- (dynamically limited to 1 screen)
- ^csrdnoutline cursor down to next line that starts on or
- to the left of the cursor
- ^csrdnoutlinemk cursor down to next line that starts on or
- to the left of the cursor ignoring text
- outside of current area mark margins
- ^csrdnwrap cursor down with wrap
- ^csrdnwrap(1..77) cursor down 1..77 lines with wrap
- (cursor stops at line 1, top and bottom of
- each window)
- ^csrendln cursor to end of line
- ^csrlf cursor left 1 col without wrap
- ^csrlf(0..127) cursor left 254,1..127 cols without wrap
- ^csrlfwrap cursor left 1 col with wrap
- ^csrlfwrap(0..127) cursor left 254,1..127 cols with wrap
- (cursor stops at col 1, right side)
- ^csrnextendpara cursor to next line after paragraph
- ^csrnextendparamk crsr to next line after paragraph ignoring
- text outside of current area mark margins
- ^csrnextpara cursor to first line of next paragraph
-
-
- p-14
- ^csrnextparamk cursor to next paragraph ignoring text
- outside of current area mark margins
- ^csrprevendpara cursor to previous line after paragraph
- ^csrprevendparamk cursor to prev line after paragraph ignoring
- text outside of current area mark margins
- ^csrprevpara cursor to first line of prev paragraph
- ^csrprevparamk cursor to previous paragraph ignoring text
- outside of current area mark margins
- ^csrreturn cursor return
- ^csrrt cursor right 1 col without wrap
- ^csrrt(0..127) cursor right 254,1..127 cols without wrap
- ^csrrtwrap cursor right 1 col with wrap
- ^csrrtwrap(0..127) cursor right 254,1..127 cols with wrap
- (cursor stops at col 1, right side)
- ^csrstartln cursor to start of line
- ^csrtxt cursor to text
- ^csrup cursor up without wrap
- ^csrup(1..78) cursor up 1..78 lines without wrap
- (dynamically limited to 1 screen)
- ^csrupoutline cursor up to next line that starts on or to
- the left of the cursor
- ^csrupoutlinemk cursor up to next line that starts on or
- to the left of the cursor ignoring text
- outside of current area mark margins
- ^csrupwrap cursor up with wrap
- ^csrupwrap(1..77) cursor up 1..77 lines with wrap
- (cursor stops at line 1, top and bottom of
- each window)
- ^defrag defragment, display free mem
- ^delar delete block/line area
- ^delblock delete block area
- ^delblocknsc delete block area - no on screen check
- ^delblockrem delete block area - remove mark
- ^delblockremnsc del blk area - remove mark - no scrn check
- ^delchar(1..127) delete 1..127 characters
- ^delln delete non-excluded line
- ^dellns delete line area
- ^dispmsg(0..63) displays message 0..63
- See MESSAGE NUMBERS for text/number list.
- ^dispmsgnum(0..63) displays message 0..63 followed by var(0)
- ^dlr $
- ^endmacro end macro
- This is automatically supplied by REPROF at
- the end of each macro, but is needed to end
- a macro from inside the macro.
- ^enhancedkbauto enable enhanced keyboard (if attached)
- ^enhancedkboff disable enhanced keyboard support
- ^eraseendln erase end of line
- ^exaddnotmod exclude added and unmodified
- ^exaddnotmodrem exclude added and unmodified - remove mark
- ^exaddnotmodses exclude added and unmodified in session
- ^exall exclude all in mark
- ^exallrem exclude all in mark - remove mark
- ^exallses exclude all in session
- ^exchildren excludes children
-
-
- p-15
- ^execcmd execute command
- ^execcmdnorecall execute command - do not save command for
- recall
- ^execfcn executes function contained in var 0
- ^exmkchildren excludes children ignoring data outside the
- area mark margins
- ^exindent exclude by indentation
- ^exindentrem exclude by indentation - remove mark
- ^exindentses exclude by indentation entire session
- ^exln exclude one line
- ^exnone unexclude all in mark
- ^exnonerem unexclude all in mark - remove mark
- ^exnoneses unexclude all in session
- ^exnotadd exclude old lines
- ^exnotaddrem exclude old lines - remove mark
- ^exnotaddses exclude old lines in session
- ^exnotmod exclude unmodified lines
- ^exnotmodadd exclude unmodified old lines
- ^exnotmodaddrem exclude unmodified old lines - remove mark
- ^exnotmodaddses exclude unmodified old lines in session
- ^exnotmodrem exclude unmodified lines - remove mark
- ^exnotmodses exclude unmodified lines in session
- ^expara exclude by paragraph
- ^expararem exclude by paragraph - remove mark
- ^exparases exclude by paragraph entire session
- ^fillblock fill with block pattern
- ^fillblockrem fill with block pattern - remove mark
- ^fillnum fill with numeric line pattern
- ^fillnumrem fill with numeric line pattern - remove mark
- ^flow flow text
- ^flowextrasp flow with extra blank at end of sentence
- ^flowextraspkp flow with extra blank at end of sen, kp mark
- ^flowkp flow text, keep mark
- ^flowlist flow into list
- ^flowlistkp flow into list, keep mark
- ^getkey gets a keystroke and puts it in var 0
- special keys are translated
- (see GETKEY AND STRUCTURED USER INPUT)
- ^getkeyns gets a keystroke and puts it in var 0
- special keys are not checked for
- ^gotoarmk go to area mark (top left corner)
- ^gotoarmkbl go to bottom left corner of area mark
- ^gotoarmkbr go to bottom right corner of area mark
- ^gotoarmktr go to top right corner of area mark
- ^gotopsmk go to position mark
- ^halt breaks out of macro system
- ^help help
- ^help(1..25) help starting on page A..Y
- ^hicsr(1..127) highlight cursor for 1..126 blinks or
- indefinitely
- ^if< x y if x<y then don't skip next token
- ^if<= x y if x<=y
- ^if<> x y if x<>y (not equal)
- ^if<>0 x if x<>0 (not equal)
- ^if= x y if x=y
- ^if=0 x if x=0
- ^if> x y if x>y
-
-
- p-16
- ^if>= x y if x>=y
- ^ifcharblank if current character is blank
- ^ifcharinword if current char is in a word
- This function checks if the current
- character is in the set of characters used
- with the Find commands Word option.
- ^ifcharnotblank if current char is not blank
- ^ifcharnotinword if current char is not in a word
- ^ifcsrcmdln if cursor on cmd line don't skip next token
- ^ifcsrtxt if cursor in text area
- ^ifeditable if current line is editable
- ^ifinsmd if insert mode
- ^iflnadd if current line was added
- ^iflnblank if current line or excluded group is blank
- ^iflnexcluded if current line is excluded
- ^iflnmk if current line has an area mark
- ^iflnmod if current line is modified
- ^iflnnotadd if current line was not added
- ^iflnnotblank if cur line or excluded group not blank
- ^iflnnotexcluded if current line not excluded
- ^iflnnotmk if current line does not have an area mark
- ^iflnnotmod if current line is not modified
- ^iflnnotpsmk if current line does not have an pos mark
- ^iflnnottopbot if cursor is not on TOP --- or BOTTOM ---
- ^iflnpsmk if current line has a position mark
- ^iflntopbot if cursor is on TOP --- or BOTTOM --- line
- ^ifnoteditable if current line not editable
- ^ifnotsuccess if previous function was not successful
- "Not found", "No files" messages as well as
- any error messages make this true.
- ^ifpendingcmd x if uppercase(first nonblank on command
- line) is x (set x to ^0 to catch 0..9)
- ^ifpendingcmdnot x if uppercase(first nonblank on command line)
- is not x (set x to ^0 to catch 0..9)
- ^ifrplmd if replace mode
- ^ifsuccess if previous function was successful
- ^ignoreexlnsmd sets ignore excluded lines mode on/off
- ^ignoreexlnsmd1 sets ignore excluded lines mode on only for
- the next non-control function
- ^ignoreexlnsmdoff sets ignore excluded lines mode off
- ^ignoreexlnsmdon sets ignore excluded lines mode on
- Sets "permanent" ignore excluded lines mode.
- It will be turned on only if there is an
- area mark and will be turned off by any
- functions that do not use this mode. This is
- not used in either REPROF.1 or REPROF.2.
- ^inhibitscrn inhibit display updates
- Causing an "Are you sure? (Y/N)" prompt,
- going into help mode, or not being in a
- macro updates the screen and enables screen
- updates.
- ^insar insert area
- ^insmd insert mode
- ^insrplmd insert mode/replace mode
- ^join join lines
- ^jumpbk(1..126) jump backwards 1..126 macro tokens
- ^jumpbklb(1..63) jump backward to label
-
-
- p-17
- ^jumpfor(1..126) jump 1..126 macro steps
- ^jumpforlb(1..63) jump forward to label
- ^jumpforlbcycle(1..10) jump forward to label 1..n
- ^jumpforlbcycle jumps to label 1..n based on
- the number of consecutive macro calls. Each
- leg of the macro must end with ^setprevfcn
- ^macro(*) to continue the cycle. See
- MULTIFUNCTION MACROS.
- ^keyfcn x executes the function at address x
- ^label(1..63) label noop
- ^label(*) label noop catches all jump*lb(1..63)
- ^lfside left side
- ^lfsiderem left side - remove mark
- ^lowercase lowercase
- ^lowercaserem lowercase - remove mark
- ^macro(0..127) execute macro 0..127
- ^macro(*) execute current macro (this is for use
- with ^setprevfcn, ^setvar, etc.)
- ^menu(1..39) displays menu A..Y, 1..9, α, ß, Γ, π, Σ
- (see MENUS)
- ^mergeoverlay merging overlay (overlays only where target
- is blank)
- ^mkcol mark column of area
- ^mkcolres mark column of area with mark resizing
- ^mkcor mark corner of area
- ^mkcorlm mark corner of area - always uses last area
- mark margin, not word wrap margin, for alt-l
- alt-b
- ^mkcorlmres mark corner of area with mark resizing
- ^mkcorres mark corner of area with mark resizing
- ^mkln mark line of area
- ^mklnres mark line of area with mark resizing
- ^mkses mark entire session
- ^movearmk moves area mark (not contents) to cursor
- ^movelns move line area
- ^newln(1..128) insert 1..128 new lines, don't change
- cursor column
- ^newlnalign(1..128) insert 1..128 new lines, align cursor
- ^newlncol1(1..128) insert 1..128 new lines, put cursor in
- column 1
- ^newlnww(1..128) insert 1..128 new lines, put cursor in
- left word wrap column
- ^nextses next edit session
- ^noop no operation
- ^overlayar overlay area
- ^overlaycmd overlay pending command at cursor
- Does not work on command line.
- ^overlaydate overlays date at cursor
- ^overlayfile overlays file name at cursor
- ^overlaytime overlays time at cursor
- ^panel(1..39) displays panel A..Y, 1..9, α, ß, Γ, π, Σ
- (see PANELS)
- ^patchbyte a b patch byte b at address a
- Do not patch @lnlen. Colors will not be
- updated until after a DOS shell or ^setat*
- function.
- ^patchbytes(1..63) a b patches 1..63 bytes starting at a
-
-
- p-18
- ^patchword a w patch word w at address a
- ^patchwords(1..63) a w patches 1..63 words starting at a
- ^pause pause for about 1 second
- ^prevses previous edit session
- ^recallcmdbk recall commands reverse order
- ^recallcmdfor recall commands
- ^repcurchange repeats current change (including cmd line)
- ^repcurfind repeats current find (including cmd line)
- ^repdispchange repeat displayed change
- ^repdispfind repeats displayed find
- ^rescsrps restores cursor position, ins/rpl mode
- ^resexmd restores ignore excluded lines mode
- ^resfindchange restores find, change strings, options
- ^reshow reshow
- ^resseschg restores session chgd state
- ^revexlns reverse excluded lns in area
- ^revexlnsrem reverse excluded lines in area - remove mark
- ^revexlnsses reverse excluded lns in session
- ^rplmd replace mode
- ^rtjustify right justify
- ^rtjustifyexspkp rt justify, extra space after sen, keep mark
- ^rtjustifyextrasp right justify, extra space after sentence
- ^rtjustifykp right justify, keep mark
- ^rtside right side
- ^rtsiderem right side - remove mark
- ^savecsrps saves cursor position, insert/replace
- mode, session changed flag, find/change
- variables, ignore excluded lines mode flag
- ^scrollcenln scroll current line to center of screen
- ^scrolldn(0..78) scroll down 0..78 lines - max 1 screen
- ^scrolldn1/2pg scroll down 1/2 page
- ^scrolldn1/4pg scroll down 1/4 page
- ^scrolldn1/8pg scroll down 1/8 page
- ^scrolldn1pg scroll down 1 page
- ^scrolldncsr scroll down to cursor
- ^scrolllf(0..127) scroll left 254,1..127 cols
- ^scrolllfcsr scroll left to cursor
- ^scrollrt(0..127) scroll right 254,1..127 cols
- ^scrollrtcsr scroll right to cursor
- ^scrollup(0..78) scroll up 0..78 lines - max 1 screen
- ^scrollup1/2pg scroll up 1/2 page
- ^scrollup1/4pg scroll up 1/4 page
- ^scrollup1/8pg scroll up 1/8 page
- ^scrollup1pg scroll up 1 page
- ^scrollupcsr scroll up to cursor
- ^set/re/unpsmk set/reset/unset position mark
- ^setchgd set session changed flag
- ^setatb/w installs the b/w attribute set
- All future screen updates use the new
- attributes and the b/wcsrtp. To rewrite the
- screen completely, use ^updatescrn.
- ^setatclr installs the color attribute set
- ^setatcur installs the current attribute set
- ^setatlcd installs the lcd attribute set
- ^setatmon installs the monochrome attribute set
-
-
- p-19
- ^setdrawingmdcc set drawing mode current character
- ^setdrawingmddl set drawing mode double line
- ^setdrawingmdoff set drawing mode off
- ^setdrawingmdsl set drawing mode single line
- ^setprevfcn x set previous function variable to x
- ^setpsmk set position mark
- ^setshiftmd(0..26) set shift mode to off, a..z
- ^settabset(1..10) set tab set to 1..10
- ^setwwlf set left word wrap margin to cursor pos
- ^setwwlfx x set left word wrap margin to x
- ^setwwrt set right word wrap margin to cursor pos
- ^setwwrtx x set right word wrap margin to x
- ^shiftdn shift down area
- ^shiftdnrem shift down area - remove mark
- ^shiftlf shift left area
- ^shiftlfrem shift left area - remove mark
- ^shiftrt shift right area
- ^shiftrtrem shift right area - remove mark
- ^shiftup shift up area
- ^shiftuprem shift up area - remove mark
- ^sp space
- ^split/join split line/join lines
- ^splitscrn(6..77) splits the screen at line 6..77
- This function restricts windows to a minimum
- of three text lines.
- ^suppressays suppress "Are you sure?" or "Replace file?"
- on next fcn
- ^tabauto1ln(0..127) auto tab looking at current line,
- max 254,1..127
- ^tabauto2ln(0..127) auto tab looking at 2 lines,
- max 254,1..127
- ^tabauto3ln(0..127) auto tab looking at 3 lines,
- max 254,1..127
- ^tabauto4ln(0..127) auto tab looking at 4 lines,
- max 254,1..127
- ^tabauto5ln(0..127) auto tab looking at 5 lines,
- max 254,1..127
- ^tabauto6ln(0..127) auto tab looking at 6 lines,
- max 254,1..127
- ^tabauto7ln(0..127) auto tab looking at 7 lines,
- max 254,1..127
- ^tabauto8ln(0..127) auto tab looking at 8 lines,
- max 254,1..127
- ^tabbkauto1ln(0..127) auto back tab looking at current line,
- max 254,1..127
- ^tabbkauto2ln(0..127) auto back tab looking at 2 lines
- max 254,1..127
- ^tabbkauto3ln(0..127) auto back tab looking at 3 lines
- max 254,1..127
- ^tabbkauto4ln(0..127) auto back tab looking at 4 lines
- max 254,1..127
- ^tabbkauto5ln(0..127) auto back tab looking at 5 lines
- max 254,1..127
- ^tabbkauto6ln(0..127) auto back tab looking at 6 lines
- max 254,1..127
- ^tabbkauto7ln(0..127) auto back tab looking at 7 lines
- max 254,1..127
-
-
- p-20
- ^tabbkauto8ln(0..127) auto back tab looking at 8 lines
- max 254,1..127
- ^tabbkcurset bk tab - ref current tab set
- ^tabcurset tab - ref current tab set
- ^topoffile to top of file
- ^unexchildren unexcludes children
- ^unexfirstln unexclude first line in group
- ^unexlastln unexclude last line in group
- ^unexmkchildren unexcludes children ignoring text outside
- the current area mark margins
- ^unmk unmark area
- ^unsetpsmk unset position mark
- ^unsplitscrn unsplit the screen
- ^updatescrn update screen, allow updates
- This function is needed to turn the screen
- on before a macro is finished or to update
- the screen colors after ^setat*. If a macro
- ends with the screen disabled, a complete
- screen update is done automatically.
- ^updatescrninh update screen but keep inhibited
- This function may be used to update the
- screen with a new permanent panel without
- the user seeing anything.
- ^uppercase uppercase
- ^uppercaserem uppercase - remove mark
- ^upperfirst uppercase first letter
- ^upperfirstrem uppercase first letter - remove mark
- ^varadd(0..15) x var(0..15) := var(0..15) + x
- X should be less than $F000.
- ^varand(0..15) x var(0..15) := var(0..15) and x
- ^vardiv(0..15) x var(0..15) := var(0..15) div x
- ^varmul(0..15) x var(0..15) := var(0..15) * x
- ^varor(0..15) x var(0..15) := var(0..15) or x
- ^varset(0..15) x var(0..15) := x
- ^varsub(0..15) x var(0..15) := var(0..15) - x
- ^vartype(0..15) types character representation of low byte
- of variable 0..15
- ^windowa make window a active
- ^windowa/b make other window active
- ^windowb make window b active
- ^wordcmdln moves the word at the cursor to cmd line
-
- Parameters that are separate tokens should not be between $F000 and
- $FFFF. If they are then they may be mistaken for a label or one of
- the functions listed below.
-
- The following functions may be used as parameters to above
- functions. The variables that contain the values cannot be directly
- written - they must be updated by RE functions that affect them, for
- example setting an area mark sets armkcol1 and armkcol2.
-
- ^@mac x the patch offset of macro x
- ^armkcol1 left area mark column
- ^armkcol2 right area mark column
- These are not accurate unless there is an
- area mark.
- ^armkmd ^sp, a, or á (32, 97, or 160)
-
-
- p-21
- ^armknotonscrn 0 if area mark is on the screen
- ^armkses session pointer of area mark session
- Pointers change during database
- defragmentation - across macros, DOS
- shells, area mark functions.
- ^armkwd area mark width
- ^bytepatch a byte at patch address a
- ^chgd 0 if the session is unchanged
- ^curchar character under cursor
- This value is not accurate unless the
- current line is editable.
- ^curcol current cursor column
- ^currow current screen line (1..80)
- ^curscol current cursor screen column
- ^curses session pointer of current session
- ^curwindow current window (0, 1 for a, b)
- ^drawingmd drawing mode (0..3)
- ^inarmk 0 if the cursor is not in the area mark
- ^maxlnwidth maximum line length
- ^msgnum current message number
- ^psmkcol position mark column
- This is not accurate unless there is a
- position mark.
- ^psmkses session pointer of position mark session
- This is not accurate unless there is a
- position mark.
- ^insrplmdval 0 for replace, 1 for insert
- ^otherwinses session pointer of the inactive window
- ^scrncol leftmost column on screen
- ^scrnheight virtual screen height in lines
- (active window, status, command)
- ^scrnheightfull full screen height in lines
- (windows, perm panel, status, command)
- ^scrnsplit number of text lines in window a or 0 if
- there is no split
- ^scrnwidth screen width in columns
- ^shiftmd shift mode
- ^var(0..15) value of variable 0..15
- ^wordpatch a word at patch address a
- ^wordwrapcol1 left word wrap column
- ^wordwrapcol2 right word wrap column
- @* numeric value of any patch location
- ^* numeric value of any function except
- those noted here
-
- For example:
-
- ^if= ^var(0) ^var(1) compares var(0) and var(1)
- ^varset(2) ^curchar sets var(2) to the current
- character
- ^varset(1) ^bytepatch @defwraprt sets var(1) to the default right
- word wrap margin.
-
- There is no range checking on the numeric parameters of functions,
- so be careful.
-
-
- p-22
- Any function (except the ASCII characters) prefixed with & instead
- of ^ will be the same function but keyboard decoasted. For example,
- &scrolllf(1) scrolls left 1 column and is decoasted, while
- ^scrolllf(1) scrolls left 1 column but is not decoasted.
-
- From a macro the & and ^ distinction is different - & means end the
- macro if the function is not successful and ^ means continue the
- macro regardless of the outcome. See MACROS.
-
- ^if functions that evaluate to false skip one macro token. If the
- desired true function uses more than one token, use the reverse if
- function and jump around the function. For example, instead of
-
- ^if=0 ^var(1) ^varset(0) 1
-
- which will not work correctly, use
-
- ^if<>0 ^var(1) ^jumpfor(3) ^varset(0) 1.
-
-
- p-23
- @SPECIALKEY AND @SPECIALKAL - SPECIAL KEYS
-
- Starting at @specialkey are nine words that define the special keys
- to use for cursor left, cursor right, cursor up, cursor down, enter,
- esc, pgup, pgdn, and help in the drawing modes, when a message
- requests that you press enter to continue, for the help system, and
- for menus. The words contain the location in the key translation
- table of the key to use. The default set is @csrlf, @csrrt, @csrup,
- @csrdn, @ent, @esc, @pgup, @pgdn, and @a-f1. You must be sure to
- assign only locations that contain normal RE functions, not ASCII
- codes. Each location must be unique to be seen. If other keys have
- the same function as the ones assigned here, then they will cause
- the same action in the help system, etc.
-
- At @specialkal is another set of nine words that are alternate
- values for the special keys. They should have the same values as
- those for @specialkey unless you want another key to have the same
- function. The default set is @mouself, @mousert, @mouseup, @mousedn,
- @mousebtnlf, @mousebtnrt, @pgup, @pgdn, and @a-f1. This lets the
- mouse enter six of the special keys.
-
-
- p-24
- MACROS
-
- RE lets you define up to 127 macros numbered 1 to 127. To put a
- macro in in an RE profile, use the line
-
- X macronumber function function ...
-
- and the macro may be continued on a new line with
-
- Y function function ...
-
- Macros are nestable to a depth of 16 calls. No checking is done to
- insure that the stack does not overflow - it is up to you to not
- exceed this maximum. If a macro calls another macro and the next
- function in the first macro is ^endmacro then this is equivalent to
- jumping to the new macro rather than calling it and no extra stack
- space is taken.
-
- To use macro number i, assign the function ¯o(i) to a key.
-
- The functions are listed in RE FUNCTIONS. When functions are called
- from a macro, if a function is prefixed with & instead of ^ then if
- the function causes an error message, the macro is prematurely
- ended. If not then the macro continues despite the message. Messages
- that do not cause the macro to end, even if the function is prefixed
- with & are Changed, Default disk/dir changed, Enter ASCII code,
- Found, Free memory low, Free paragraphs, Numeric fill overflow,
- Printed, Saved.
-
- Some functions are considered control functions and cannot affect
- the current position or database. These functions do not update
- messages, reset cyclic functions, or reset the "are you sure?"
- continued feature (this lets you do repeated destructive shifts
- without being prompted each time). The functions are:
-
- ^endmacro ^jump.. ^patch..
- ^getkey.. ^keyfcn ^setprevfcn
- ^halt ^label ^updatescrn
- ^if.. ^macro ^var.. (except vartype)
- ^ignoreexlnsmd1 ^menu
- ^inhibitscrn ^panel
-
- So if you construct a macro of just these functions with a single
- core operation, any dependance of the core operation on the previous
- function is transferred through the control functions. The following
- macro shifts the contents of the area mark left if in insert mode
- and right if in replace mode, and repeated destructive shifts do not
- cause "are you sure?" prompts.
-
- X 60 ^ifinsmd &shiftlf ^ifrplmd &shiftrt.
-
- To use draw mode from inside a macro trace out the drawing with
- ^keyfcn @csrup, ^keyfcn @csrdn, ^keyfcn @csrlf, and ^keyfcn @csrrt.
-
-
- p-25
- STARTUP MACRO
-
- Macro 0 is the startup macro. When RE has finished reading in its
- initial file, before user input is allowed, macro 0 is called. Macro
- 0 is just like any other macro except for this.
-
- In REPROF.1 and REPROF.2 macro 0 does nothing.
-
- VARIABLES
-
- RE has 16 word (unsigned 2 byte) variables numbered 0..15. Variable
- i is set with ^varset(i) x, and accessed as a parameter with
- ^var(i). You can add to a variable (^varadd(i) x), subtract
- (^varsub), multiply (^varmul), divide (^vardiv), or (^varor), or and
- (^varand). The low byte of a variable may be typed, as if entered
- from the keyboard, with ^vartype(i).
-
- Variable 0 is special. It is used by the functions: ^execfcn which
- executes the function represented by the value of var(0);
- ^menu(0..39) which processes a menu and returns the result in
- var(0); ^getkey which gets a keyboard entry and puts the associated
- function into var(0), translating special keys into ^jumpforlb
- functions; ^getkeyns which is like ^getkey except that special keys
- are not translated; and ^dispmsgnum(0..63) which displays a message
- followed by the value of var(0).
-
- To set var(1) to the value of var(4) use ^varset(1) ^var(4). To
- compare var(1) to var(4) use ^if= ^var(1) ^var(4).
-
- MANIPULATION OF MACRO FUNCTIONS
-
- Each token in an RE macro is one word, with an associated mnemonic.
- If a function has separate parameters (^setwwrtx x for example) then
- the parameter is a separate token and a variable may be used for the
- parameter. If the function has an attached parameter
- (^setshiftmd(0..26) for example) then that parameter is part of the
- function token and must be a constant. If you need such a parameter
- to be variable you can generate the required function in the macro.
- Set variable 0 to the function with a 0 parameter, add the desired
- parameter to variable 0, and then execute the function in variable
- 0. For example to do the function ^setshiftmd(^var(1)) (which is not
- allowed) use this code:
-
- ^varset(0) ^setshiftmd(0) ^varadd(0) ^var(1) ^execfcn
-
-
- p-26
- HANDY MACRO SEQUENCES
-
- Here are a few useful macro sequences. The first two put the cursor
- on the top and bottom of the current window.
-
- ^if= ^currow 1 ^csrdn ^if<> ^currow ^scrnheight ^csrdnwrap(77)
- ^if= ^currow 3 ^jumpfor(3) ^csrcmdln ^csrdn
-
- These put the cursor at the left and right side of the screen.
-
- ^if<> ^curcol 1 ^csrlfwrap(0)
- ^if<> ^curcol ^scrnwidth ^csrrtwrap(0)
-
- Here are traditional page up and page down sequences.
-
- ^savecsrps ^scrollup1pg ^rescsrps
- ^savecsrps ^scrolldn1pg ^rescsrps
-
- Also see REPROF.MAC. This is a set of macros that may be useful
- including:
-
- rotating permanent panels
- record and playback keystrokes
- move marked area
- box the perimeter of the area mark
- delete blank lines in the area mark
- load multiple files on startup.
-
-
- p-27
- QUERYING MODES AND SITUATIONS
-
- There are many direct ^if statements available for querying the
- state of RE, but there also are many possible queries that require
- looking at specific variables. Here is a list of useful ^if
- commands.
-
- ^if<>0 ^inarmk if cursor is in area mark
- ^if<>0 ^chgd if session has been changed
- ^if<>0 ^armknotonscrn if area mark is not in the window
- (assumes an area mark exists)
- ^if<>0 ^psmkses if there is a position mark
- ^if= ^psmkses ^curses if the current session has a pos mark
- ^if<> ^armkmd ^sp if there is an area mark
- ^if= ^armkmd a if there is a completed area mark
- ^if= ^armkses ^curses if area mark is in the current session
- (assumes an area mark exists)
- ^if= ^shiftmd 3 if shift mode is 3
- ^if<>0 ^drawingmd if in one of the drawing modes
- ^if= ^curcol 34 if the cursor is in column 34
- ^if= ^curcol ^armkcol1 if cursor is in the left area mark col
- (assumes an area mark exists)
- ^if= ^curchar S if the current character is S
- ^if<>0 ^scrnsplit if screen is split
-
- WORKING WITH A SPLIT SCREEN
-
- To a macro (and to RE internally) a split screen window appears to
- be just an ordinary small screen. That is, the cursor row (^currow)
- moves sequentially 1, 3, 4, ..., ^scrnheight. But you can get the
- actual cursor row by using ^scrnsplit. To put the cursor's actual
- screen row in var(1), use:
-
- ^varset(1) ^currow
- ^if= ^curwindow 0 ^jumpfor(3) ^varadd(1) ^scrnsplit
-
- Here is a function that splits the screen at the current line, or
- unsplits the screen if it is already split.
-
- X 1
- Y ^if=0 ^scrnsplit ^jumpfor(3) ^unsplitscrn ^endmacro
- Y ^ifcsrcmdln ^jumpfor(4) ^varset(0) ^currow ^jumpfor(7)
- Y ^varset(0) ^scrnheight ^varadd(0) 2 ^vardiv(0) 2
- Y ^varadd(0) ^splitscrn(1) ^execfcn
-
- The ^splitscrn function will not allow a window of less than three
- text lines. If you unsplit the screen, put up a permanent panel, and
- then split it again at the same line (the recommended procedure for
- displaying a permanent panel), the position of the split may change.
- And if you change the number of lines on the screen from a DOS
- shell, RE may reconfigure the screen split (or even unsplit it) to
- insure that each window has three lines.
-
-
- p-28
- MACRO CONTROL OF COMMANDS
-
- The enter key may be re-programmed to examine pending commands and
- take specific action based on that information. In REPROF.1 and
- REPROF.2 the mouse and keyboard enter functions are:
-
- * mouse enter
- X 105 ^macro(124) ^if=0 ^var(0) ^endmacro
- Y ^macro(112)
- * keyboard enter
- X 106 ^macro(124) ^if=0 ^var(0) ^endmacro
- Y ^csrreturn
-
- Macro 124 looks for a pending command and executes it, setting
- var(0) to 0 if it found a command or 1 if not.
-
- * execute pending command and set var(0) to 0 or 1 if no command
- X 124 ^varset(0) 1
- Y ^ifcsrtxt ^jumpfor(4)
- Y ^iflnblank ^endmacro ^jumpfor(7)
- Y ^ifpendingcmd F ^jumpfor(4)
- Y ^ifpendingcmdnot C ^endmacro
- Y ^execcmd ^varset(0) 0
-
- You can replace macro 124 to change the way it decides if a command
- is pending or the way that it executes the command. An example is:
-
- * execute pending command and set var(0) to 0 or 1 if no command
- X 124 ^varset(0) 1
- Y ^ifcsrtxt ^jumpfor(3)
- Y ^iflnblank ^endmacro
- Y ^ifpendingcmd F ^jumpforlb(2)
- Y ^ifpendingcmd C ^jumpforlb(2)
- Y ^ifcsrtxt ^endmacro
- Y ^ifpendingcmdnot S ^jumpfor(9)
- Y ^varset(0) ^curses // * save-clear mod add flags
- Y &execcmd
- Y ^if= ^curses ^var(0) ^clrmodadd
- Y ^jumpforlb(1)
- Y ^ifpendingcmdnot E ^jumpfor(7)
- Y &execcmd // * edit-exclude at col 3
- Y ^csrtxt ^csrrt(2) ^exindentses ^csrcmdln
- Y ^jumpforlb(1)
- Y ^ifpendingcmdnot ^0 ^jumpfor(3)
- Y ^execcmdnorecall // * don't save line num cmds
- Y ^jumpforlb(1)
- Y ^label(2) ^execcmd
- Y ^label(1) ^varset(0) 0
-
-
- p-29
- MACRO DEFINED SHIFT MODES
-
- You can set the user shift mode with the ^setshiftmd(0..26)
- function. 0 is the default. 1..26 are displayed on top of the caps
- lock indicator as a..z.
-
- Here is a macro that rotates between shift modes a, b, and off
-
- X 1 ^if<>0 ^shiftmd ^jumpfor(3) ^setshiftmd(1) ^endmacro
- Y ^if<> ^shiftmd 1 ^jumpfor(3) ^setshiftmd(2) ^endmacro
- Y ^setshiftmd(0)
-
- And to use the shift modes, here is a macro that looks at the
- shift mode and does one of three different functions.
-
- X 2 ^if<>0 ^shiftmd ^jumpforlb(1)
- Y functions for shift mode off ...
- Y ^endmacro
- Y ^label(1) ^if<> ^shiftmd 1 ^jumpforlb(1)
- Y functions for shift mode 1 ...
- Y ^endmacro
- Y ^label(1) ^if<> ^shiftmd 2 ^endmacro
- Y functions for shift mode 2 ...
-
- You can also use the patch functions to reset key assignments when a
- new shift mode is set, so you could reassign the entire function key
- set based on shift mode.
-
- If you use shift modes, it is a good idea to set a permanent panel
- for each mode. This makes it obvious what mode is current and
- provides some help for that mode. See PANELS.
-
- MULTIFUNCTION MACROS
-
- The RE macro language makes it easy to create macros that do
- different functions on consecutive calls. This feature is used in
- the default profile on the alt-v key to produce the center function
- on the first press, left side on the second, and right side on the
- third. Similar (though some a little more complex) macros are used
- to rotate drawing modes (alt-z), move to the various marks (alt-g),
- and exclude and unexclude children (alt-6). Here is the
- center/left/right macro.
-
- X 102 ^jumpforlbcycle(3)
- Y ^label(1) ¢er ^jumpfor(6)
- Y ^label(2) &lfside ^jumpfor(3)
- Y ^label(3) &rtside
- Y ^setprevfcn ^macro(*)
-
- ^jumpforlbcycle jumps to one of label 1..3 based on the number of
- consecutive calls to macro 102 (any number up to 10 may be used). To
- keep the cycle going, before the macro is called a second time, RE
- must think that the most recent function was that macro. ^setprevfcn
- ^macro(*) just before ending the macro does this.
-
-
- p-30
- GETKEY AND STRUCTURED USER INPUT
-
- ^getkey gets a key from the user and puts the function that is
- assigned to that key in variable 0. If any of the special keys are
- pressed then they are returned as ^jumpforlb(i) where i is:
-
- 1 for cursor left 4 for cursor down 7 for page up
- 2 for cursor right 5 for enter 8 for page down
- 3 for cursor up 6 for escape 9 for help
-
- ^getkeyns is the same as getkey except that special keys are not
- checked for.
-
- This lets you create structured data input macros. An example is a
- macro that gets a user selection from vertical list. The cursor is
- left on the selected line and variable 0 contains ^jumpforlb(5) for
- enter or ^jumpforlb(6) for escape.
-
- M 50 ^msg Select line // * define message 50
- X 1
- Y ^csrtxt ^csrlf(0)
- Y ^label(1) ^dispmsg(50) ^getkey
- Y ^if< ^var(0) ^jumpforlb(3) ^jumpbklb(1)
- Y ^if> ^var(0) ^jumpforlb(9) ^jumpbklb(1)
- Y ^execfcn
- Y ^label(3) ^csrup ^jumpbklb(1) // * csrup
- Y ^label(4) ^csrdn ^jumpbklb(1) // * csrdn
- Y ^label(7) ^keyfcn @pgup ^jumpbklb(1) // * pgup
- Y ^label(8) ^keyfcn @pgdn ^jumpbklb(1) // * pgdn
- Y ^label(9) ^help(4) ^jumpbklb(1) // * help pg 4
- Y ^label(5) ^ifnoteditable ^jumpbklb(1) // * enter
- Y ^label(6) ^dispmsg(0) // * esc
-
- This macro puts up a panel and, on the next keystroke, removes it
- and executes the keystroke.
-
- X 1 ^panel(34) ^getkeyns ^updatescrn ^execfcn
-
- If you need to look for a specific key, rather than a function, the
- only way to do it is to compare the function returned from ^getkey
- with the function assigned to that key. If the function on the key
- is not unique then other keys can trigger the same response. You
- need to and off $80 from the key function because that is used by
- the keyboard routine and then removed. For example, to get a key and
- check to see if it was alt-s:
-
- ^getkey
- ^varset(1) ^wordpatch ^@a-s ^varand(1) $FF7F
- ^if= ^var(0) ^var(1)
-
- Functions $4000 to $4FFF are not used by RE. You can assign these to
- keys, use ^getkey or ^getkeyns to get the function, and have a macro
- interpret them. This may be useful when getting user input that is
- only valid when a specific panel is displayed. Or $80 with the
- number to enable keyboard decoasting.
-
-
- p-31
- MESSAGES, MESSAGE TYPES, AND USER DEFINED MESSAGES
-
- NUMBER MESSAGE TYPE NUMBER MESSAGE TYPE
-
- 0 A wd- ht- $18 24 Printed $08
- 1 Changed $08 25 Incorrect number $05
- 2 Found $08 26 DOS memory error $2F
- 3 Line(s) too long $1D 27 Drive not ready $07
- 4 Saved $28 28 Disk write protected $07
- 5 Insufficient free memory $25 29 Incorrect option $05
- 6 Line(s) split $1F 30 Incorrect file name $05
- 7 Not found $0C 31 Incorrect Find string $05
- 8 Saved - file replaced $28 32 Incorrect Change string $05
- 9 Memory full - Data Lost $07 33 Are you sure? (Y/N) $01
- 10 Parameter too long $05 34 Mark is not in session $05
- 11 Area mark already exists $05 35 Free paragraphs $08
- 12 No area mark $05 36 Numeric fill overflow $08
- 13 No line area mark $05 37 Cannot use display mode $25
- 14 No mark $05 38 Defragmenting memory $00
- 15 Free memory low $08 39 Replace file? (Y/N) $00
- 16 Incorrect cursor position $05 40 Press Enter to continue $00
- 17 Disk/device error $07 41 Default disk/dir changed $09
- 18 Mark is not on screen $05 42 No files $0C
- 19 Enter ASCII code $00 43 Changed > 10000 $08
- 20 Incorrect command $05 44 Found > 10000 $08
- 21 Insufficient disk space $07 45 user defined message $00
- 22 Not in ring $05 . . .
- 23 Insert A:, press Enter $00 63 user defined message $00
-
- The message type bytes are at @MSGTP(0..63). The bits of the message
- type bytes are:
-
- $1 - red (and beep if "B @beep ^error" is set)
- $2 - beep (unless "B @beep ^no" is set)
- $4 - ends a macro if displayed by an & prefixed function
- This bit is also queried by the ^ifsuccess function.
- $8 - this message indicates a command or function was successful If
- a command finishes with this message then it is stored in the
- recall list and the command line is blanked.
- $10 - this message indicates an edit command was successful
- An Edit command starts a new session and reads in a file. If
- the file read finishes with this message then the new session
- is kept, otherwise the new session is removed from memory.
- $20 - if RE ends with this message, display it in DOS
-
- The message type mnemonics are ^critical ($07), ^error ($05), ^msg
- ($00).
-
- You may define messages 45..63 (and rewrite 0..44). To set a message
- use the line "M number type message" anywhere in the profile before
- the help text. Number is the message number, type is the message
- type (^critical, ^error, ^msg, or a number), and the message text is
- up to 25 characters. For example: "M 45 ^msg Macro complete".
-
- Use the function ^dispmsg(0..63) to display a message.
- ^dispmsgnum(0..63) displays a message followed by the value of
- variable 0.
-
-
- p-32
- TAB SETS
-
- You may define up to ten tabs sets numbered 1..10. Set 1 must be
- defined since it is the default that RE sets up on entry.
-
- To define a tab set, use the line
-
- T setnumber column column ...
-
- To choose an automatic tab function, set column 1 to 0, column 2 to
- the number of lines above the current line to look at (0..7), and
- column 3 to the maximum number of columns to move (1..254).
-
- The default tab set is an automatic tab function: "T 0 4 8".
-
- The tabs sets are selected with the T command and are used only by
- the ^lftabcurset and ^rttabcurset functions.
-
- HELP TEXT
-
- The help text follows all patches, macro, tab sets, and messages. It
- starts with a special line containing @ in column one. This is the
- bottom line of each help screen (if there is room for it). In the
- default profile it is blank. Then for each of up to 25 help screens,
- is the title line beginning with "A".."Y". Following the title line
- is the body of the screen, in columns 2 through 81. The help pages
- must be in order and use consecutive page letters starting with A.
- Set B @lastpghelp to the last page of the help text. For example:
-
- B @lastpghelp C
-
- @F1,Esc-Quit help A..C-Page A..C PgDn-Next Page ..
- AHelp Menu
- A Help Menu
- B Basic Commands
- C Basic Functions
- BBasic Commands
- To execute a command, enter the command on the command line, ..
- .
- .
- CBasic Functions
- Alt-A Enters an ASCII code
- .
- .
-
- Note that Z is not a valid help page letter.
-
-
- p-33
- MENUS
-
- Menus are the same as help screens except they are limited to 9
- lines (plus the title) and the help screen letter is extended to
- cover 39 screens/menus. The menu letter must not overlap help
- screens and must follow the last help screen (help A..R, menus U..5
- in REPROF.PR1). The menu letter may be A..Y, 1..9, α, ß, Γ, π, or Σ
- and these are referred to as 1..39 in the menu function.
-
- The menu item fields are columns 2..21, 22..41, 42..61, and 62..81
- on each line. These fields are numbered 11,21,31,41, 12,22,32,42,
- etc. If the first character in a field is nonblank then that field
- has an item. If any character in the field up to the first blank
- (ASCII 32 but not ASCII 0 or 255) is a capital letter, then it may
- be selected by the user with that letter.
-
- You must write a macro to control a menu. The menu is displayed with
- ^menu(1..39) and the menu routine has control until a user response
- is made. When control is given back to the macro the user response
- is in variable 0. It may be any RE function except ASCII 0..255 and
- ^noop. If the response is one of the menu items then variable 0
- contains a ^jumpforlb(item) function. If the response is one of the
- last four special keys (see @SPECIALKEY - SPECIAL KEYS) then escape
- gives ^jumpforlb(6), page up gives ^jumpforlb(7), page down gives
- ^jumpforlb(8), and help gives ^jumpforlb(9). Any other key gives the
- function assigned to that key. The response in var(0) may be queried
- to filter some responses and/or executed.
-
- The menu routine always displays the menu, even if ^inhibitscrn mode
- is on and leaves the display in ^inhibitscrn mode. ^updatescrn will
- reset this as will ending the macro.
-
- The menu function is a control function and does not update
- messages, the "are you sure?" continued feature, etc.
-
- Here is a sample menu and a macro to control it:
-
- NGeneral Functions
- mark block resize set position mark single draw
- mark line resize unset position mk double draw
- mark column resize
-
- X 114 ^label(1) ^menu(14)
- Y ^if= ^var(0) ^macro(*) ^endmacro // * toggles menu on/off
- Y ^execfcn ^endmacro // * executes response which
- // * may be a ^jumpforlb
- Y ^label(6) ^endmacro // * esc
- Y ^label(7) ^macro(113) ^endmacro // * pgup
- Y ^label(8) ^macro(115) ^endmacro // * pgdn
- Y ^label(9) ^help(8) ^endmacro // * help page 8
- Y ^label(11) &mkcorres ^endmacro
- Y ^label(12) &mklnres ^endmacro
- Y ^label(13) &mkcolres ^endmacro
- Y ^label(21) &setpsmk ^endmacro
- Y ^label(22) &unsetpsmk ^endmacro
- Y ^label(31) &setdrawingmdsl ^endmacro
- Y ^label(32) &setdrawingmddl
-
-
- p-34
- PANELS
-
- Panels are the same as menus (and may be mixed with them) except
- that they are displayed with ^panel(0..39) and once displayed,
- control is immediately returned to the caller. The display is
- inhibited. You can get user input with ^getkey or ^getkeyns. Panels
- may be any number of lines, but are dynamically cut to fit within
- the screen height - 5 lines.
-
- Here is a sample panel and control macro that displays some
- information and at the next keystroke redisplays the screen and
- executes the keystroke. This assumes special key definitions @csrlf,
- @csrrt, @csrup, @csrdn, @ent, @esc, @pgup, @pgdn, and @a-f1.
-
- OInformation Panel
- any information ...
- any information ...
- any information ...
-
- X 115 ^panel(15) ^getkey ^updatescrn ^execfcn ^endmacro
- Y ^label(1) ^keyfcn @csrlf ^endmacro
- Y ^label(2) ^keyfcn @csrrt ^endmacro
- Y ^label(3) ^keyfcn @csrup ^endmacro
- Y ^label(4) ^keyfcn @csrdn ^endmacro
- Y ^label(5) ^keyfcn @ent ^endmacro
- Y ^label(6) ^keyfcn @esc ^endmacro
- Y ^label(7) ^keyfcn @pgup ^endmacro
- Y ^label(8) ^keyfcn @pgdn ^endmacro
- Y ^label(9) ^keyfcn @a-f1
-
- If you don't want to intercept any special keys then you can use:
-
- X 115 ^panel(15) ^getkeyns ^updatescrn ^execfcn
-
- One panel may be made permanent by setting B @permpanel to the panel
- number. Permanent panels are displayed during editing but are
- overwritten by DOS shells, help text, and generally by menus
- (depending on the cursor position), but they are restored
- automatically after this.
-
- This panel may be changed with a macro but you must insure that the
- cursor is not covered by the new panel and that window B still has
- at least three text lines. To set a permanent panel which may have a
- different height than the current permanent panel use this code. It
- unsplits the screen, displays the new panel, and resplits the
- screen. This avoids all potential problems.
-
- y ^inhibitscrn ^savecsrps ^csrcmdln
- y ^varset(0) ^scrnsplit ^if<>0 ^var(0) ^unsplitscrn
- y ^patchbyte @permpanel (panel#) ^updatescrninh
- y ^if=0 ^var(0) ^jumpfor(4) ^varadd(0) ^splitscrn(2) ^execfcn
- y ^rescsrps ^updatescrn
-
-
- p-35
- The automatic permanent panel feature sets the permanent panel to
- one of four panels based on the state of the keyboard. The first
- panel is for the unshifted state, the second for when the alt key is
- pressed, the third for when the control key is pressed, and the
- fourth for when the shift key is pressed.
-
- To use this feature, set B @autopanel and B @permpanel to the number
- of the first automatic panel. The next three panels (sequential) are
- for alt, ctrl, and shift. Each of the panels should have the same
- height - the keyboard routine rewrites the panels blindly and does
- not worry about the details needed for different sized panels. The
- byte at @apdelay specifies a delay before the display of the alt,
- ctrl, and shift panels in 1/18 second (one PC timer tick). Setting
- this to approximately 9 helps prevent excessive screen changes.
-
- RE updates the @permpanel byte with the current automatic panel as
- it polls the keyboard.
-
- These panels will not overwrite help, menus, or transient panels,
- but will overwrite any current permanent panel. If you let it
- overwrite a permanent panel, do not let it take up more space than
- the current panel, because the keyboard routine will not be able to
- handle the situation if the cursor or window B is covered by the new
- panel.
-
-
- p-36
- COMPATIBILITY AND TECHNICAL INFORMATION
-
- REPROF will run on any IBM compatible MS-DOS computer with 256
- Kbytes of memory, under any standard environment.
-
- REPROF is a pure Turbo Pascal program. All input and output uses the
- Turbo Pascal library. Screen writes use Turbo Pascal's standard
- write functions. REPROF takes no interrupts beyond those taken by
- the Turbo Pascal startup code.
-
- REPROF was compiled with Borland's Turbo Pascal 5.5 and Turbo
- Assembler 1.01.
-